<html>
<head><meta charset="utf-8"><title>3rd party libraries in official books/documentation · t-libs · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/index.html">t-libs</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html">3rd party libraries in official books/documentation</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="228818338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228818338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228818338">(Mar 04 2021 at 17:47)</a>:</h4>
<p>hey, we're working on the error handling book and in our last meeting we wanted to know if we should / shouldn't mention 3rd party crates in  our examples</p>



<a name="228818362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228818362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228818362">(Mar 04 2021 at 17:48)</a>:</h4>
<p>or if we should include recommendations</p>



<a name="228818468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228818468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228818468">(Mar 04 2021 at 17:48)</a>:</h4>
<p>do we have any policy on this?</p>



<a name="228818823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228818823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228818823">(Mar 04 2021 at 17:51)</a>:</h4>
<p>generally speaking we do not want to mention 3rd party crates, especially anywhere where you would be tempted to enumerate if someone said 'but what about Y'</p>



<a name="228820533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228820533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228820533">(Mar 04 2021 at 18:01)</a>:</h4>
<p>we mention the <code>dirs</code> crate as a replacement for env::home_dir, but i think this has honestly been something of a mistake:</p>
<ul>
<li>that crate was the source of a bunch of drama last year and was briefly abandoned or something</li>
<li>for the non-home dir use case, it makes some (subtly) opinionated choices (CLI tools on macos putting config and such things in ~/Library is not common or often desirable...)</li>
</ul>
<p>that said, for error handling, perhaps it's hard to avoid...</p>



<a name="228821522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821522">(Mar 04 2021 at 18:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="209168">Thom Chiovoloni</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228820533">said</a>:</p>
<blockquote>
<p>that said, for error handling, perhaps it's hard to avoid...</p>
</blockquote>
<p>Yea, this is sort of the key concern</p>



<a name="228821608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821608">(Mar 04 2021 at 18:07)</a>:</h4>
<p>my feeling is a lot of rust's approach to error handling revolves around encouraging 3rd party error handling library usage</p>



<a name="228821719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821719">(Mar 04 2021 at 18:08)</a>:</h4>
<p>like, the expectation is that you'll need something more complex and specific to your application than what std could hope to provide</p>



<a name="228821834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821834">(Mar 04 2021 at 18:09)</a>:</h4>
<blockquote>
<p>especially anywhere where you would be tempted to enumerate if someone said 'but what about Y'</p>
</blockquote>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> so my approach to this historically has been to not gatekeep what can be listed</p>



<a name="228821886"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821886" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821886">(Mar 04 2021 at 18:09)</a>:</h4>
<p>so we could in theory have a chapter just documenting the various error handling libraries out there, and make it so anyone could add theirs to the list</p>



<a name="228821897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821897">(Mar 04 2021 at 18:09)</a>:</h4>
<p>tho I could see that going sideways here</p>



<a name="228821920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228821920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228821920">(Mar 04 2021 at 18:09)</a>:</h4>
<p>even just in the form of choice overload</p>



<a name="228822237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822237">(Mar 04 2021 at 18:11)</a>:</h4>
<p>The challenge is that fundamentally you <em>are</em> forced to gatekeep just by virtue of someone developing a new crate not knowing they can or not feeling like they want to be on that list. Plus, even "attempted" exhaustivity still implies endorsement, you can't get around that. It's definitely a hard problem!</p>



<a name="228822409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822409">(Mar 04 2021 at 18:12)</a>:</h4>
<p>yea</p>



<a name="228822620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822620">(Mar 04 2021 at 18:14)</a>:</h4>
<p>Mentioning stuff in a dedicated book on the topic feels fine. it actually would probably be pretty conspicuous to fail to mention 3rd party crates in an error handling book...</p>
<p>I think mentioning them in the stdlib docs is more dubious, although I'm not sure I can fully defend this distinction beyond: I suspect the stdlib docs would get stale much more quickly and is less likely to keep up to date on changes here.</p>
<p>That said, yeah it's tricky since it's hard to cover everybody's crate, and these things change over time. <code>failure</code>'s deprecated now after all, but was the new hotness for quite a while.</p>



<a name="228822728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822728">(Mar 04 2021 at 18:14)</a>:</h4>
<p>yea</p>



<a name="228822850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822850">(Mar 04 2021 at 18:15)</a>:</h4>
<p>maybe we could survey the error handling crates that currently exist, classify them, and then describe them indirectly</p>



<a name="228822852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822852">(Mar 04 2021 at 18:15)</a>:</h4>
<p>One question I have - do you think there could be a single crate endorsed? e.g. is there a solution that's likely good to get started with?</p>



<a name="228822872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822872">(Mar 04 2021 at 18:15)</a>:</h4>
<p>"you'll find error handling crates that act like a dyn error and they work like this"</p>



<a name="228822884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228822884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228822884">(Mar 04 2021 at 18:15)</a>:</h4>
<p>rather than "check out anyhow or eyre"</p>



<a name="228823020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823020">(Mar 04 2021 at 18:16)</a>:</h4>
<p>Complete agreement here: we shouldn't try to list error-handling crates.</p>



<a name="228823031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823031">(Mar 04 2021 at 18:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228822852">said</a>:</p>
<blockquote>
<p>One question I have - do you think there could be a single crate endorsed? e.g. is there a solution that's likely good to get started with?</p>
</blockquote>
<p>for some specific problems I'd say yes but for the main ones people need these libraries for no, there's competing solutions still</p>



<a name="228823039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823039">(Mar 04 2021 at 18:16)</a>:</h4>
<p>thiserror vs snafu</p>



<a name="228823071"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823071" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823071">(Mar 04 2021 at 18:16)</a>:</h4>
<p>anyhow vs eyre</p>



<a name="228823102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823102">(Mar 04 2021 at 18:16)</a>:</h4>
<p>Hm, I think that can work, but I think there a ton of value in specifying a default choice. We may not be able to do that yet though.</p>



<a name="228823113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823113">(Mar 04 2021 at 18:16)</a>:</h4>
<p>and many more crates that I don't personally use so cant even easily recall</p>



<a name="228823116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823116">(Mar 04 2021 at 18:16)</a>:</h4>
<p>which is part of the problem no doubt</p>



<a name="228823152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823152">(Mar 04 2021 at 18:17)</a>:</h4>
<p>One thing I think we could safely do would be to say "here's a category on <a href="http://crates.io">crates.io</a>, you might find some useful crates in that category, we're not endorsing any particular crate".</p>



<a name="228823204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823204">(Mar 04 2021 at 18:17)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228823152">said</a>:</p>
<blockquote>
<p>One thing I think we could safely do would be to say "here's a category on <a href="http://crates.io">crates.io</a>, you might find some useful crates in that category, we're not endorsing any particular crate".</p>
</blockquote>
<p>yea, and if we do it in a way thats easily searchable we could possibly reach out to crates and be like "hey we think you should add this category here's a PR"</p>



<a name="228823223"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823223" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823223">(Mar 04 2021 at 18:17)</a>:</h4>
<p>I think starting by trying to talk about the pattern is good though.</p>



<a name="228823244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823244">(Mar 04 2021 at 18:17)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228823102">said</a>:</p>
<blockquote>
<p>Hm, I think that can work, but I think there a ton of value in specifying a default choice.</p>
</blockquote>
<p>I agree with this but part of my feeling is that we can't really do that unless that default choice is part of the stdlib (and if it's really a "default choice", I think it's easy to argue that it should be).</p>



<a name="228823247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823247">(Mar 04 2021 at 18:17)</a>:</h4>
<p>and kinda organize the ecosystem a bit and then let the ecosystem carry that forward</p>



<a name="228823376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823376">(Mar 04 2021 at 18:18)</a>:</h4>
<p>for the most part I don't think any of the defaults will win specifically</p>



<a name="228823379"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823379" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823379">(Mar 04 2021 at 18:18)</a>:</h4>
<p>Well, std also implies stability - whereas defaults can change over time</p>



<a name="228823395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823395">(Mar 04 2021 at 18:18)</a>:</h4>
<p>I can see an error derive going into std</p>



<a name="228823409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823409">(Mar 04 2021 at 18:18)</a>:</h4>
<p>I personally hope that one day there are two standard error-handling solutions in the standard library, one that's a "smarter grab-bag dyn Error with downcasting" like anyhow/eyre, and one that's a "generate enum variants" like thiserror.</p>



<a name="228823428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823428">(Mar 04 2021 at 18:18)</a>:</h4>
<p>but I don't see one of the error derive libraries becoming a defacto winner that everyone uses</p>



<a name="228823437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823437">(Mar 04 2021 at 18:18)</a>:</h4>
<p>But if there's not obvious defaults, I think going with patterns to start is my recommendation</p>



<a name="228823502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823502">(Mar 04 2021 at 18:19)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span> I was pushing towards getting an anyhow/eyre like into std but my conversation with mara made me reconsider</p>



<a name="228823512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823512">(Mar 04 2021 at 18:19)</a>:</h4>
<p>I don't think that pointing to a category on <a href="http://crates.io">crates.io</a> is sufficient. Even if we can't pick <em>one</em>, the book should at least go into some detail on one or two specific crates, and indicate that others exist (and possibly name them)</p>



<a name="228823555"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823555" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823555">(Mar 04 2021 at 18:19)</a>:</h4>
<p>But I don't think the ecosystem is ready for such a step yet, personally, <em>especially</em> because we're talking about evolving Error (with some kind of dynamically attachable properties), and we'd need to give time for people to explore the resulting design space.</p>



<a name="228823707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823707">(Mar 04 2021 at 18:20)</a>:</h4>
<p><span class="user-mention silent" data-user-id="271719">Mario Carneiro</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228823512">said</a>:</p>
<blockquote>
<p>I don't think that pointing to a category on <a href="http://crates.io">crates.io</a> is sufficient. Even if we can't pick <em>one</em>, the book should at least go into some detail on one or two specific crates, and indicate that others exist (and possibly name them)</p>
</blockquote>
<p>If we'd done that a few years ago, we'd have pointed to crates like failure, or quick_error, both of which are no longer generally considered the right choice.</p>



<a name="228823771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823771">(Mar 04 2021 at 18:20)</a>:</h4>
<p>Okay, that happens... update the book</p>



<a name="228823805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823805">(Mar 04 2021 at 18:20)</a>:</h4>
<p><span class="user-mention silent" data-user-id="271719">Mario Carneiro</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228823771">said</a>:</p>
<blockquote>
<p>Okay, that happens... update the book</p>
</blockquote>
<p>that's costly because most ppl wont read the book twice</p>



<a name="228823851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823851">(Mar 04 2021 at 18:21)</a>:</h4>
<p>so the official endorsement lingers</p>



<a name="228823947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228823947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228823947">(Mar 04 2021 at 18:21)</a>:</h4>
<p>I think I lean towards not naming any 3rd party libs</p>



<a name="228824018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824018">(Mar 04 2021 at 18:22)</a>:</h4>
<p>Talking about error handling in the abstract is less useful than talking about any particular crate</p>



<a name="228824132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824132">(Mar 04 2021 at 18:22)</a>:</h4>
<p>it doesn't even matter which one, consider it a "running example" if you like</p>



<a name="228824135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824135">(Mar 04 2021 at 18:22)</a>:</h4>
<p><span class="user-mention silent" data-user-id="271719">Mario Carneiro</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228824018">said</a>:</p>
<blockquote>
<p>Talking about error handling in the abstract is less useful than talking about any particular crate</p>
</blockquote>
<p>we would still allude to them and describe them</p>



<a name="228824166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824166">(Mar 04 2021 at 18:22)</a>:</h4>
<p>like, we'd describe 3rd party libraries, and show how <code>anyhow</code> works essentially</p>



<a name="228824192"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824192" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824192">(Mar 04 2021 at 18:22)</a>:</h4>
<p>and probably mention that there are many error derive macros</p>



<a name="228824240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824240">(Mar 04 2021 at 18:23)</a>:</h4>
<p>and maybe show a mock-up of what they look like as if std provided one (not sure on this idea)</p>



<a name="228824348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824348">(Mar 04 2021 at 18:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="271719">Mario Carneiro</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228824132">said</a>:</p>
<blockquote>
<p>it doesn't even matter which one, consider it a "running example" if you like</p>
</blockquote>
<p>funny that you mention running example, because that's exactly how we planned on doing this, where we have multiple examples that each share a crate that we build up over each example</p>



<a name="228824440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824440">(Mar 04 2021 at 18:24)</a>:</h4>
<p>well, "exactly how we planned"</p>



<a name="228824453"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824453" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824453">(Mar 04 2021 at 18:24)</a>:</h4>
<p>as in vaguely mentioned during one of our meetings</p>



<a name="228824459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824459">(Mar 04 2021 at 18:24)</a>:</h4>
<p>lol</p>



<a name="228824737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824737">(Mar 04 2021 at 18:26)</a>:</h4>
<p><span class="user-mention" data-user-id="220273">@Jane Lusby</span> We could always give an abstract example. "Suppose we have an error-handling library, <code>airneyhow</code>, which provides <code>airneyhow::Error</code>..."</p>



<a name="228824830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824830">(Mar 04 2021 at 18:26)</a>:</h4>
<p>loool</p>



<a name="228824892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824892">(Mar 04 2021 at 18:26)</a>:</h4>
<p>Or would that be putting on airs? :)</p>



<a name="228824916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824916">(Mar 04 2021 at 18:26)</a>:</h4>
<p>banned</p>



<a name="228824947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228824947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228824947">(Mar 04 2021 at 18:27)</a>:</h4>
<p><span class="user-mention silent" data-user-id="220273">Jane Lusby</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228824166">said</a>:</p>
<blockquote>
<p>like, we'd describe 3rd party libraries, and show how <code>anyhow</code> works essentially</p>
</blockquote>
<p>Hopefully you just mean in the abstract.</p>
<p>Concretely going into the implementation should be out of scope IMO: It's nontrivial to write correctly while following our current "best guess" of the rust aliasing model (see <a href="https://github.com/dtolnay/anyhow/pull/134">https://github.com/dtolnay/anyhow/pull/134</a>). However, covering this endorses the current aliasing model in ways that may be undesirable for official docs, given that it's still a work in progress and subject to change.</p>
<p>It's also probably more complex than any of the bits in the nomicon...</p>



<a name="228825041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228825041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228825041">(Mar 04 2021 at 18:27)</a>:</h4>
<blockquote>
<p>Hopefully you just mean in the abstract.</p>
</blockquote>
<p>oh yea, it will forsure be simplified</p>



<a name="228825056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228825056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228825056">(Mar 04 2021 at 18:27)</a>:</h4>
<p>none of the manual vtable stuff</p>



<a name="228826157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228826157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228826157">(Mar 04 2021 at 18:34)</a>:</h4>
<p>yeh, i'd avoid it using unsafe if possible. (P.S. IIRC eyre started as a fork of anyhow, and you might want to see if you can apply that patch/something like it if you weren't already aware. I think the version on anyhow master has safer wrappers for some of that stuff too)</p>



<a name="228826210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228826210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228826210">(Mar 04 2021 at 18:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228823020">said</a>:</p>
<blockquote>
<p>Complete agreement here: we shouldn't try to list error-handling crates.</p>
</blockquote>
<p>Definitely agreed here, because I don't know any way to resolve what feels like inevitable drama in from people making PRs to add mentions of their own libraries.</p>
<p>I like the "link to a <a href="http://crates.io">crates.io</a> tag" approach.</p>



<a name="228827213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228827213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228827213">(Mar 04 2021 at 18:41)</a>:</h4>
<p>I checked, and I don't see any relevant <a href="http://crates.io">crates.io</a> category, which would be ideal.</p>



<a name="228827319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228827319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228827319">(Mar 04 2021 at 18:42)</a>:</h4>
<p>It might make sense to add a category, and send PRs to the current generation of error-handling crates, which would have the advantage of not listing historical ones.</p>



<a name="228830724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228830724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228830724">(Mar 04 2021 at 19:03)</a>:</h4>
<p><span class="user-mention silent" data-user-id="209168">Thom Chiovoloni</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228826157">said</a>:</p>
<blockquote>
<p>yeh, i'd avoid it using unsafe if possible. (P.S. IIRC eyre started as a fork of anyhow, and you might want to see if you can apply that patch/something like it if you weren't already aware. I think the version on anyhow master has safer wrappers for some of that stuff too)</p>
</blockquote>
<p>already added to my todo list as soon as you linked that PR</p>



<a name="228830866"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228830866" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228830866">(Mar 04 2021 at 19:04)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228827319">said</a>:</p>
<blockquote>
<p>It might make sense to add a category, and send PRs to the current generation of error-handling crates, which would have the advantage of not listing historical ones.</p>
</blockquote>
<p>for what it's worth I think there shouldn't be just 1 tag</p>



<a name="228830912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228830912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228830912">(Mar 04 2021 at 19:04)</a>:</h4>
<p>I was imagining like 5 / 6 tags</p>



<a name="228830955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228830955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228830955">(Mar 04 2021 at 19:04)</a>:</h4>
<p>error-reporting, error-reacting, error-defining, error-propagating</p>



<a name="228830959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228830959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228830959">(Mar 04 2021 at 19:04)</a>:</h4>
<p>etc</p>



<a name="228848165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228848165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228848165">(Mar 04 2021 at 20:51)</a>:</h4>
<p>oh no no friend, on <a href="http://crates.io">crates.io</a> we use :: as the sub-sepatator</p>



<a name="228848222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228848222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228848222">(Mar 04 2021 at 20:51)</a>:</h4>
<p>for whatever reason, that's not a joke</p>



<a name="228863580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228863580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228863580">(Mar 04 2021 at 22:38)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228848165">said</a>:</p>
<blockquote>
<p>oh no no friend, on <a href="http://crates.io">crates.io</a> we use :: as the sub-sepatator</p>
</blockquote>
<p>noted,</p>



<a name="228956753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228956753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> BurntSushi <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228956753">(Mar 05 2021 at 13:56)</a>:</h4>
<p>i haven't read the entire thread, but i would like to express that i am perhaps a bit more sympathetic to the idea of including either recommendations or specific examples of third party crates in "official" docs. i am, of course, also extremely sympathetic to the problems induced by doing such things. it does have a lot of potential to go bad. in general, the reason why i'm sympathetic to the idea of doing it is that it seems like something users would ultimately appreciate. if the alternative is using more generic language and contorting ourselves somewhat just to avoid mentioning an existing solution because it's third party, then that doesn't sound like a good position to be in IMO. because now it means folks reading these materials need to do their own translation step between the stuff provided in the docs and how to apply it to the actual crate they'll use. in essence, this prevents us from using one of the most effective educational techniques: providing real concrete examples that users can apply directly and expect to have it work.</p>



<a name="228957186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/228957186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> BurntSushi <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#228957186">(Mar 05 2021 at 13:59)</a>:</h4>
<p>solving the problems caused by having third party libraries mentioned in official materials seems difficult or perhaps even impossible. i have no illusions about that. i think what it might come down to is which problems we would rather have. personally, i think i would rather have the problems associated with having third party crates in official materials than the problem of producing official materials that aren't as good as they can be. i think the latter problem has a broader reach. but i recognize that this is a bit wishy washy...</p>



<a name="229010860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229010860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229010860">(Mar 05 2021 at 19:29)</a>:</h4>
<p>The other thing that could maybe help is to have some somewhat object criterion</p>



<a name="229010957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229010957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229010957">(Mar 05 2021 at 19:30)</a>:</h4>
<p>as in, we take the 3 most popular (as measured by recent downloads on <a href="http://crates.io">crates.io</a> at some point of time) crates from the error handling category</p>



<a name="229011043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229011043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229011043">(Mar 05 2021 at 19:31)</a>:</h4>
<p>that way you can endorse common options without having to mess with a long list of candidates, and you only have to revise it if there's actually a new contender that's sufficiently popular</p>



<a name="229011887"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229011887" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229011887">(Mar 05 2021 at 19:36)</a>:</h4>
<p>Another option, if we do decide it's important to have a specific example, is to pick <em>one</em> thing that's considered to be an up-to-date choice, use that as an example, and add appropriate disclaimers in a few places saying "this is one example, using the xyz crate; there are many other crates available via <a href="http://crates.io">crates.io</a> (in such-and-such category), and this shouldn't be taken as a recommendation for one crate over another".</p>



<a name="229012070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229012070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229012070">(Mar 05 2021 at 19:37)</a>:</h4>
<p>I believe we've had some negative experiences in the past with pointing to any specific crates, but if we're going to do so, I think it'd be reasonable to just pick something and make it clear it was a semi-arbitrary choice.</p>



<a name="229012137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229012137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229012137">(Mar 05 2021 at 19:38)</a>:</h4>
<p>That makes it less likely people will send in PRs adding their own crates, because we aren't providing a list, we're giving one example.</p>



<a name="229012207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229012207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229012207">(Mar 05 2021 at 19:38)</a>:</h4>
<p>(And people can add their own crates by using the appropriate category on <a href="http://crates.io">crates.io</a>, and <a href="http://crates.io">crates.io</a> gives appropriate statistics so people can gauge recency, popularity, etc.)</p>



<a name="229013099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229013099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229013099">(Mar 05 2021 at 19:44)</a>:</h4>
<p>it is a mild recommendation of one over another. that's just how it goes. you've taught the user how to use that crate and they don't yet have knowledge of how to use the others and so now it has an advantage.</p>
<p><em>but that is okay</em></p>
<p>We actually <em>want</em> people to have a shared vocabulary for things in the ecosystem and if someone wants to make an alternative way to do X <em>and have everyone adopt it</em> then they should make their new way clearly enough better to justify people moving over.</p>



<a name="229013640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229013640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229013640">(Mar 05 2021 at 19:48)</a>:</h4>
<p>Like if someone makes a serialization library, they better have a very good story for how it's better than <code>serde</code> if they want people to use it. That reason can be whatever they want to have it be. Maybe the new lib has less features and then builds twice as fast, that would be neat.</p>



<a name="229013830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229013830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229013830">(Mar 05 2021 at 19:49)</a>:</h4>
<p>And anyone can still use their own crate all they want to do that. But if you're asking other people to spend their time to override ecosystem inertia, then you genuinely need to articulate <em>why</em> people should try the new thing.</p>



<a name="229014051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229014051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229014051">(Mar 05 2021 at 19:51)</a>:</h4>
<p>--signed, a dummy who actually does almost exclusively use his own crates for near everything, and sometimes other people also use his crates, and sometimes not.</p>



<a name="229037120"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229037120" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229037120">(Mar 05 2021 at 22:45)</a>:</h4>
<p>There isn't even a category for error handling on <a href="http://crates.io">crates.io</a></p>



<a name="229037132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229037132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229037132">(Mar 05 2021 at 22:45)</a>:</h4>
<p>we should probably fix that first</p>



<a name="229037244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229037244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229037244">(Mar 05 2021 at 22:46)</a>:</h4>
<p>okay hows this for a plan, create an announcment about how we plan to write the book, including referencing 3rd party crates, and how we're going to pick them. Essentially tell everyone who wants their crate considered to add the correct new category to their crate</p>



<a name="229037380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229037380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229037380">(Mar 05 2021 at 22:47)</a>:</h4>
<p>then in the book itself preface the section with concrete examples with an explanation that we're going to use specific 3rd party libraries but we're not specifically endorsing them, and re-explain the method we used to pick them, and that we will periodically check if we should update examples to other crates that have become the defacto standard by our established metric.</p>



<a name="229040365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229040365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229040365">(Mar 05 2021 at 23:13)</a>:</h4>
<p>I think just keeping the book up to date with current trends is more important than the part where you disclaim any possible endorsement, but otherwise that all sounds fine.</p>



<a name="229040441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229040441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> BurntSushi <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229040441">(Mar 05 2021 at 23:14)</a>:</h4>
<p><span class="user-mention" data-user-id="220273">@Jane Lusby</span> that sounds okay. it will also give folks outside the libs team to weigh in on that decision. so we might phrase it as, "as of now, we are planning on doing X, but we welcome feedback on X."</p>
<p>also, i think it's a bit weasely to say, "we picked this crate for reason foo, it's important enough to show examples of it, show how to use it and incorporate it into this really important topic, buuuuuuuut we don't endorse it." with that said, i understand why we might want to say something like that. maybe we could just doubly emphasize that it is a third party crate and not controlled by the libs team. (although, confusingly, it may be maintained by a libs team member... hah.)</p>



<a name="229045022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229045022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229045022">(Mar 06 2021 at 00:01)</a>:</h4>
<p>Undigested thought: For some reason it feels to me far more reasonable for a <em>book</em> to mention 3rd party crates than for the <em>reference docs</em> to do so.</p>
<p>That's a bit self-contradictory, though, so I'm trying to figure out why.  Maybe it's because it's more normal for a book to be a "voice of the author", and thus fundamentally at least slightly subjective anyway.  Maybe it's because there's always the possibility of writing an additional book from a different perspective -- like an "error handling in embedded" book or something would be fine too, and probably talk about rather different things.  Whereas there's only one "these are the reference docs for the error trait", making it more impersonal and conflicty.</p>



<a name="229045663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229045663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229045663">(Mar 06 2021 at 00:08)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> fwiw the error handling book is intended to be more like a book than a reference</p>



<a name="229045754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229045754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229045754">(Mar 06 2021 at 00:09)</a>:</h4>
<p>we've been planning on avoiding duplication of information as much as we reasonably can and cross linking to the reference / book / whatever else is relevant as much as we can</p>



<a name="229047043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229047043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229047043">(Mar 06 2021 at 00:23)</a>:</h4>
<p><span class="user-mention" data-user-id="220273">@Jane Lusby</span> Yeah, I had missed the "book" part of the topic when I made my original post in the thread, so wanted to add some nuance to it.</p>
<p>In long form "telling a story" there's way more space for nuance and alternatives than, say, what can reasonably fit in an Examples section of a rustdoc entry.</p>



<a name="229047119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229047119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jane Lusby <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229047119">(Mar 06 2021 at 00:24)</a>:</h4>
<p>Gotcha</p>



<a name="229062620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/219381-t-libs/topic/3rd%20party%20libraries%20in%20official%20books/documentation/near/229062620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation.html#229062620">(Mar 06 2021 at 04:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/229045022">said</a>:</p>
<blockquote>
<p>Undigested thought: For some reason it feels to me far more reasonable for a <em>book</em> to mention 3rd party crates than for the <em>reference docs</em> to do so.</p>
</blockquote>
<p>Yeah, I feel the same way basically (and said as much <a href="#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228822620">https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/3rd.20party.20libraries.20in.20official.20books.2Fdocumentation/near/228822620</a> ). Rust books often have the author voice show through, and are less serious than the official docs (for example: the nomicon, despite the serious subject matter)</p>
<p>A big hesitation I have here is: how to decide when to remove a recommendation of a crate from the book because it's gone out of style (as happened with error_chain and failure in the past). Short of official deprecation or notice of lack of maintenance, it seems much easier to add stuff than remove stuff, which seems bad... Or are we okay with it referring to crates past the point when they're actually the best recommendations?</p>
<p>The other, lager one, is: I really think we should avoid the situation where we explicitly "bless" a single crate as the solution to a problem again, as I know for a fact that last time the stdlib did this, it did discourage people from producing alternatives, despite it not exactly being a solved problem that fits perfectly in all cases. This was for sure unintentional, but we should learn from it.</p>
<p>A way to avoid that (without hitting the problem <span class="user-mention" data-user-id="222471">@BurntSushi</span> mentioned where we avoid committing to anything) might just be to mention more than one crate when describing solutions... For something like error handling perhaps this isn't as much of a risk though, as it's easier to see that theres no one-size-fits-all solution. I also think being in a book alleviates the issue as well, but it's worth trying to avoid.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>